/**
 * 请求头
 */
var header = {
    'content-type': 'application/json',
    'X-MINI-APP-TOKEN': wx.getStorageSync("token")
}
/**
 * 接口域名 
 */
// var host = 'https://uat.report.ybc365.com'
var host = 'https://report.ybc365.com'
/**
 * 供外部post请求调用  
 */
function post(url, params, onSuccess, onFailed) {
    request(url, params, "post", onSuccess, onFailed);
}
/**
 * 供外部get请求调用
 */
function get(url, params, onSuccess, onFailed) {
    request(url, params, "GET", onSuccess, onFailed);
}
/**
 * 供外部put请求调用
 */
function put(url, params, onSuccess, onFailed) {
    request(url, params, "PUT", onSuccess, onFailed);
}
/**
 * 供外部delete请求调用
 */
function deleteFun(url, params, onSuccess, onFailed) {
    request(url, params, "DELETE", onSuccess, onFailed);
}
/**
 * 供外部patch请求调用
 */
function patch(url, params, onSuccess, onFailed) {
    request(url, params, "PATCH", onSuccess, onFailed);
}
/**
 * function: 封装网络请求
 * @url URL地址
 * @params 请求参数
 * @method 请求方式：GET/POST
 * @onSuccess 成功回调
 * @onFailed  失败回调
 */
function request(url, params, method, onSuccess, onFailed) {
    wx.showLoading({
        title: "正在加载中...",
    })
    if (method == 'GET') {
        header = {
            'content-type': 'application/x-www-form-urlencoded',
            'X-MINI-APP-TOKEN': wx.getStorageSync("token")
        }
    }else{
        header = {
            'content-type': 'application/json',
            'X-MINI-APP-TOKEN': wx.getStorageSync("token")
        }
        params = JSON.stringify(params)
    }
    wx.request({
        url: host + url,
        data: dealParams(params),
        method: method,
        header: header,
        success: function (res) {
            wx.hideLoading();
            console.log('响应：', res.data);
            if (res.data) {
                /** start 根据需求 接口的返回状态码进行处理 */
                if (res.statusCode == 200) {
                    onSuccess(res.data); //request success
                } else {
                    onFailed(res.data.message); //request failed
                }
                /** end 处理结束*/
            }
        },
        fail: function (error) {
            onFailed(error); //failure for other reasons
        }
    })
}
/**
 * function: 根据需求处理请求参数：添加固定参数配置等
 * @params 请求参数
 */
function dealParams(params) {
    return params;
}
// 1.通过module.exports方式提供给外部调用
module.exports = {
    postHttp: post,
    getHttp: get,
    putHttp: put,
    deleteHttp: deleteFun,
    patchHttp: patch,
    hosts:host
}